import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JTextField;
/**Clase utilizada a modo de controlador, para enviar ordenes entre Calculadora y Calculo
 * 
 * @author panche
 *
 */
public class MyListenerBotones implements ActionListener {
	Botones boton;
	Calculo calculador;
	double n1, n2;
	String aux1 = "", aux2 = "";
	String operacion = null;
	JTextField pantalla;
	double resultado = 0;

	public MyListenerBotones(JTextField pant) {
		pantalla = pant;
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		boton = (Botones) arg0.getSource();
		switch (boton.getCodigo()) {
		// Boton numerico
		case 1:
			if (operacion == null && resultado == 0) {
				aux1 += boton.getLabel();
				pantalla.setText(aux1);
				System.out.println("Escribe el primer numerico");
			} else {
				aux2 += boton.getLabel();
				pantalla.setText(aux2);
				System.out.println("Escribe el segundo numerico");
			}
			break;
		// Boton de operaciones
		case 2:
			if (operacion == null
					&& !this.boton.getLabel().equalsIgnoreCase("=")
					&& !this.boton.getLabel().equalsIgnoreCase("C")) {
				if (!aux1.equalsIgnoreCase("") || resultado == 0)
					n1 = Double.parseDouble(aux1);
				else
					;
				operacion = boton.getLabel();
				pantalla.setText(" ");
				System.out.println("Aqui entra (primer boton de operaciones)");
			} else {

				if (this.boton.getLabel().equalsIgnoreCase("C")) {
					aux1 = "";
					aux2 = "";
					operacion = null;
					n1 = 0;
					n2 = 0;
					resultado = 0;
					pantalla.setText(" ");
					System.out.println(" Aqui entraC");
				} else {
					if (this.boton.getLabel().equalsIgnoreCase("=")) {
						if (!aux2.equalsIgnoreCase(""))
							n2 = Double.parseDouble(aux2);
						calculador = new Calculo(operacion, n1, n2);
						// metodos para calcular lo que necesite.
						resultado = calculador.operar();
						pantalla.setText("" + resultado);
						n1 = resultado;
						aux1 = "";
						aux2 = "";
						operacion = null;
						System.out.println("Aqui entra (=)");
					}
					else{
						if (!aux2.equalsIgnoreCase("")) n2 = Double.parseDouble(aux2);
						calculador = new Calculo(operacion, n1, n2);
						resultado = calculador.operar();
						pantalla.setText("" + resultado);
						n1 = resultado;
						aux1 = "";
						aux2 = "";
						operacion = boton.getLabel();
						System.out.println("Aqui entra (tercer boton operacional)");	
					}
				}
			}
			break;
		default:
			System.out.println("Error");
			break;
		}

	}

}
